﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;

using System.Text;
using System.Windows.Forms;
using DAO;
using DTO;
using BUS;
namespace ProductManagement
{
    public partial class frmChiTietXeDi : Form
    {
        public GiaoHangDTO giaoHang;
        private int maCTHang;
        bool cbiGiaoHang;
        bool daThem;
        DataTable dtChiTiet;
        bool LoadFormComplete = false;
        public frmChiTietXeDi(GiaoHangDTO _giaoHang, bool _cbiGiaoHang)
        {
            InitializeComponent();
            giaoHang = _giaoHang;
            cbiGiaoHang = _cbiGiaoHang;
        }
        private void LoadDanhSachChiTietXeDi()
        {
            String strSql = "select ct.ID, ct.MaGiaoHang, ct.LoaiGas, lg.TenLoai as TenLoaiGas, ct.SoLuong, ct.SoLuongGiao from ChiTietXeDi ct, LoaiGas lg where ct.MaGiaoHang = " + giaoHang.Id.ToString() + " and lg.ID = ct.LoaiGas";
            //String strSql = "select table1.ID, table1.MaGiaoHang, table1.MaGas as LoaiGas, table1.TenLoaiGas, table1.SoLuong, table2.SLPP as SoLuongGiao from (select ct.ID,lg.ID as MaGas, ct.MaGiaoHang, ct.LoaiGas, lg.TenLoai as TenLoaiGas, ct.SoLuong from ChiTietXeDi ct, LoaiGas lg where ct.MaGiaoHang =" + giaoHang.Id .ToString() + " and lg.ID = ct.LoaiGas) table1 left join (select LoaiGas, sum(SoLuong) as SLPP from PhanPhoi where MaGiaoHang="+giaoHang.Id.ToString()+" group by LoaiGas) table2 on table1.MaGas=table2.LoaiGas";
            dtChiTiet = DataAccess.Query(strSql);            
            dgvChiTietXeDi.AutoGenerateColumns = false;
            dgvChiTietXeDi.DataSource = dtChiTiet;
            int i = 1;
            foreach (DataGridViewRow row in dgvChiTietXeDi.Rows)
            {
                row.Cells["STT"].Value = i;
                i++;
            }
        }
        private void clearAllField()
        {            
            txtSoLuong.Value = 1;
            cbxLoaiGas.SelectedIndex=0;
            btnCapNhat.Enabled = false;
            btnXoa.Enabled = false;
        }
        private void LoadLoaiGas()
        {
            String strSql = "select lg.ID, bg.LoaiGas, lg.TenLoai from BinhGas bg, LoaiGas lg where bg.LoaiGas = lg.ID";
            DataTable dt = DataAccess.Query(strSql);
            cbxLoaiGas.DisplayMember = "TenLoai";
            cbxLoaiGas.ValueMember = "ID";          
            cbxLoaiGas.DataSource = dt;                    
        }
        private void frmChiTietXeDi_Load(object sender, EventArgs e)
        {
            daThem = false;
            txtIDGiaoHang.Text = giaoHang.Id.ToString();
            LoadLoaiGas();
            if (cbiGiaoHang == true)
            {
                SoLuongGiao.Visible = false;
                btnCapNhat.Visible = false;
                btnXoa.Visible = false;
                txtIDGiaoHang.Text = "ID: " + giaoHang.Id + " - Ngày: " + giaoHang.Ngay.ToString("dd/MM/yy - hh:mm tt");
                if (giaoHang.TaiXe != "")
                    txtIDGiaoHang.Text += " - Tài xế: " + giaoHang.TaiXe;
            }
            else
            {
                btnCapNhat.Visible = false;
                btnXoa.Visible = false;
                btnThem.Visible = false;
                LoadDanhSachChiTietXeDi();
            }
            LoadFormComplete = true;
            cbxLoaiGas_SelectedIndexChanged(sender, e);
        }

        private void btnCapNhat_Click(object sender, EventArgs e)
        {
            try
            {
                ChiTietXeDi ctXeDi = new ChiTietXeDi()
                   {
                       ID = maCTHang,
                       MaGiaoHang = giaoHang.Id,
                       MaLoaiGas = (int)cbxLoaiGas.SelectedValue,
                       SoLuong = Int32.Parse(txtSoLuong.Value.ToString())
                   };
                
                GiaoHangBUS.UpdateChiTietXeDi(ctXeDi);
                MessageBox.Show("Cập nhật thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                LoadDanhSachChiTietXeDi();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Vui lòng nhập đầy đủ dữ liệu và kiểm tra dữ liệu đã nhập vào\n" + ex.Message, "Thông báo lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
               
            }
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            try
            {
                if (MessageBox.Show("Bạn có thật sự muốn xóa?", "Thông báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning)
                        == DialogResult.OK)
                {
                    GiaoHangBUS.DeleteChiTietXeDi(maCTHang);              
                    MessageBox.Show("Xóa thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    LoadDanhSachChiTietXeDi();
                    LoadLoaiGas();
                    clearAllField();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Vui lòng nhập đầy đủ dữ liệu và kiểm tra dữ liệu đã nhập vào\n" + ex.Message, "Thông báo lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
              
            }

        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            try
            {
                ChiTietXeDi ctXeDi = new ChiTietXeDi()
                    {
                        MaGiaoHang = giaoHang.Id,
                        MaLoaiGas = (int)cbxLoaiGas.SelectedValue,
                        SoLuong = Int32.Parse(txtSoLuong.Value.ToString()),
                        SoLuongGiao = Int32.Parse(txtSoLuong.Value.ToString())
                    };                
                GiaoHangBUS.InsertChiTietXeDi(ctXeDi);               
                MessageBox.Show("Thêm thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                LoadDanhSachChiTietXeDi();
                //LoadLoaiGas();
                clearAllField();
                daThem = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Vui lòng nhập đầy đủ dữ liệu và kiểm tra dữ liệu đã nhập vào\n" + ex.Message, "Thông báo lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);               
            }
        }

        private void dgvChiTietXeDi_SelectionChanged(object sender, EventArgs e)
        {
            if (dgvChiTietXeDi.SelectedRows.Count > 0)
            {
                DataGridViewRow row = dgvChiTietXeDi.SelectedRows[0];
                maCTHang = int.Parse(row.Cells["ID"].Value.ToString());
                txtSoLuong.Value = (int)row.Cells["SoLuong"].Value;
                cbxLoaiGas.SelectedValue = (int)row.Cells["MaLoaiGas"].Value;
                int soLuong = BinhGasDAO.GetSoLuong((int)cbxLoaiGas.SelectedValue);                
                if ((int)cbxLoaiGas.SelectedValue == (int)dgvChiTietXeDi.SelectedRows[0].Cells["MaLoaiGas"].Value)
                {
                    soLuong += (int)dgvChiTietXeDi.SelectedRows[0].Cells["SoLuong"].Value;
                }
                txtMax.Text = soLuong.ToString();
                btnCapNhat.Enabled = true;
                btnXoa.Enabled = true;
            }
            else
            {
                btnCapNhat.Enabled = false;
                btnXoa.Enabled = false;
            }
        }

        private void cbxLoaiGas_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (LoadFormComplete == false)
                return;
            if (cbxLoaiGas.Items.Count > 0 && cbxLoaiGas.SelectedIndex > -1)
            {
                int soLuong = BinhGasDAO.GetSoLuong((int)cbxLoaiGas.SelectedValue);  
                if (cbiGiaoHang == false)                
                {                    
                    if (dgvChiTietXeDi.SelectedRows.Count > 0)
                        if ((int)cbxLoaiGas.SelectedValue == (int)dgvChiTietXeDi.SelectedRows[0].Cells["MaLoaiGas"].Value)
                        {
                            soLuong += (int)dgvChiTietXeDi.SelectedRows[0].Cells["SoLuong"].Value;
                        }
                }

                txtMax.Text = soLuong.ToString();
                btnCapNhat.Enabled = true;
                btnXoa.Enabled = true;
            }
            else
            {
                btnCapNhat.Enabled = false;
                btnXoa.Enabled = false;
            }
        }

        private void txtSoLuong_ValueChanged(object sender, EventArgs e)
        {
            
        }

        private void btnBack_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void frmChiTietXeDi_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (daThem == true)
                DialogResult = DialogResult.OK;
            else
                DialogResult = DialogResult.Cancel;
        }
    }
}
